<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>改变this指向apply</title>
</head>

<body>
  <script>
    // ============================== 改变this指向apply ============================== 
    // 1. 基本使用
    const obj = { name: '佩奇' }

    function fun(x, y) {
      console.log(this)
      console.log(x + y)
    }
    // fun()
    fun.call(obj,1,2)     //3
    fun.apply(obj,[10,20]) //30  必须用[]将要传的数包起来 ，注意是把数组里的数传给fun，而不是把属猪传给fun

    // 1. 作用1: 调用函数

    // 2. 作用2: 改变this指向
  
    // 3. 使用场景 - 求数组的最大值/最小值
    // 以前的写法
    const arr = [1,2,8,9,10,3]
    console.log(Math.max(...arr))  //展开运算符
    // 第一个参数用爱修改this指向，max方法this指向无需修改，只需要负责传参求最大值即可，所以第一个参数随便写
    console.log( Math.max.apply(null,arr))  
   
     // apply 或者 call 如果不需要改变this指向 写 null  
  </script>
</body>

</html>